package contapassi.prova2;

import java.io.File;
import java.util.ArrayList;


public class ScansionatoreCartella {
    private ArrayList<MyFile> listaCartelleContenute;
    private ArrayList<MyFile> listaJson;
    private ArrayList<MyFile> listaFinale;
    private File cartella;
    private String ListaFile[];
    private String percorso;

    
    ScansionatoreCartella(String percorsoRadice)
    {
        listaCartelleContenute = new ArrayList<MyFile>();
        listaJson = new ArrayList<MyFile>();
        listaFinale = new ArrayList<MyFile>();
        percorso=percorsoRadice;
        
        MyFile f=new MyFile(percorso);
        listaCartelleContenute.add(new MyFile(f.getParent()));
        
        generatoreListaFile();
        smistaListaFile();
        generaListaFinale();
    }
    
    private void generatoreListaFile()
    {
        cartella = new File(percorso);
        ListaFile = cartella.list();
        
        
        
        for(int i=0;i<ListaFile.length;i++)
        {
        	ListaFile[i]=percorso + ListaFile[i] + "/";
        }
        //System.out.println("Lista file contenuti in " + cartella.getAbsolutePath());
        //for(int i=0;i<ListaFile.length;i++)
			//System.out.println(ListaFile[i]);
    }
    
    private void smistaListaFile()
    {        
        
        for(int i=0;i<ListaFile.length;i++)
        {            
            MyFile f=new MyFile(ListaFile[i]);
            if(f.leggibile())
            {
            	if( f.getEstensione().equals("cartella") )
            	{
                	listaCartelleContenute.add(f);
            	}
            	if( f.getEstensione().equals(".json") )
            	{
            		listaJson.add(f);
            	}
            }
        }
    }
    
    private void generaListaFinale()
    {
    	listaFinale=listaCartelleContenute;
    	for(int i=0;i<listaJson.size();i++)
    		listaFinale.add(listaJson.get(i));
    }
    
    
    // metodo per controllare le liste
    public void stampaListe()
    {
        System.out.println("Numero cartelle:" + listaCartelleContenute.size() + " - Numero json:" + listaJson.size());
        System.out.println("Lista cartelle:");
        for(int i=0;i<=listaCartelleContenute.size()-1;i++)
        {
            System.out.println(listaCartelleContenute.get(i).getNome());
        }
        System.out.println("");
        System.out.println("Lista json:");

        for(int i=0;i<=listaJson.size()-1;i++)
        {
            System.out.println(listaJson.get(i).getNome());
        }
    }

    public void stampaListaFinale()
    {
        System.out.println("Numero cartelle:" + listaCartelleContenute.size() + " - Numero json:" + listaJson.size());
        System.out.println("Lista finale:");
        for(int i=0;i<=listaFinale.size()-1;i++)
        {
            System.out.println(listaFinale.get(i).getNome());
        }     
    }
    
    
    public ArrayList<MyFile> getListaFinale()
    {
        return listaFinale;
    }
    
}